package com.example.close_order.service;

import com.example.close_order.entity.Order;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Service;

@Service
public class NotificationService {
    
    private static final Logger logger = LoggerFactory.getLogger(NotificationService.class);
    
    /**
     * 发送订单关闭通知
     */
    @Async
    public void sendOrderCloseNotification(Order order) {
        try {
            // 模拟发送通知的耗时操作
            Thread.sleep(100); // 模拟网络延迟
            
            // 这里可以集成实际的通知渠道，如：
            // 1. 短信通知
            // 2. 邮件通知  
            // 3. 站内信
            // 4. 推送通知
            
            logger.info("已发送订单关闭通知 - 订单号: {}, 用户ID: {}, 金额: {}", 
                    order.getOrderNo(), order.getUserId(), order.getAmount());
            
        } catch (InterruptedException e) {
            Thread.currentThread().interrupt();
            logger.error("发送订单关闭通知时线程被中断", e);
        } catch (Exception e) {
            logger.error("发送订单关闭通知异常", e);
        }
    }
    
    /**
     * 发送订单关闭失败提醒（给管理员）
     */
    @Async
    public void sendCloseFailureAlert(String orderNo, String errorMessage) {
        try {
            // 模拟发送管理员告警
            Thread.sleep(100);
            
            logger.warn("订单关闭失败告警 - 订单号: {}, 错误信息: {}", orderNo, errorMessage);
            
        } catch (InterruptedException e) {
            Thread.currentThread().interrupt();
            logger.error("发送关闭失败告警时线程被中断", e);
        } catch (Exception e) {
            logger.error("发送关闭失败告警异常", e);
        }
    }
}